/**
 * 数值格式化工具
 * 统一处理所有数值的格式化，保留两位小数
 */

/**
 * 格式化数值，保留指定小数位
 * @param {number|string} value - 数值
 * @param {number} decimalPlaces - 小数位数，默认2位
 * @returns {string} 格式化后的字符串
 */
export function formatDecimal(value, decimalPlaces = 2) {
  if (value === null || value === undefined || value === '') {
    return '0.00'
  }
  
  const num = parseFloat(value)
  if (isNaN(num)) {
    return '0.00'
  }
  
  return num.toFixed(decimalPlaces)
}

/**
 * 格式化价格，保留两位小数
 * @param {number|string} value - 价格值
 * @returns {string} 格式化后的价格字符串
 */
export function formatPrice(value) {
  return formatDecimal(value, 2)
}

/**
 * 格式化距离，保留两位小数
 * @param {number|string} value - 距离值（公里）
 * @returns {string} 格式化后的距离字符串
 */
export function formatDistance(value) {
  return formatDecimal(value, 2)
}

/**
 * 格式化坐标，保留6位小数
 * @param {number|string} value - 坐标值（纬度/经度）
 * @returns {string} 格式化后的坐标字符串
 */
export function formatCoordinate(value) {
  return formatDecimal(value, 6)
}

/**
 * 格式化评分，保留两位小数
 * @param {number|string} value - 评分值
 * @returns {string} 格式化后的评分字符串
 */
export function formatRating(value) {
  return formatDecimal(value, 2)
}

/**
 * 格式化百分比，保留两位小数
 * @param {number|string} value - 百分比值（0-1之间的小数）
 * @returns {string} 格式化后的百分比字符串（带%符号）
 */
export function formatPercentage(value) {
  if (value === null || value === undefined || value === '') {
    return '0.00%'
  }
  
  const num = parseFloat(value)
  if (isNaN(num)) {
    return '0.00%'
  }
  
  return `${(num * 100).toFixed(2)}%`
}

/**
 * 格式化时间（分钟转小时分钟）
 * @param {number} minutes - 分钟数
 * @returns {string} 格式化后的时间字符串
 */
export function formatTime(minutes) {
  if (!minutes || minutes === 0) {
    return '0分钟'
  }
  
  const hours = Math.floor(minutes / 60)
  const mins = minutes % 60
  
  if (hours > 0) {
    return `${hours}小时${mins}分钟`
  }
  return `${mins}分钟`
}

/**
 * 格式化货币（人民币）
 * @param {number|string} value - 金额
 * @returns {string} 格式化后的货币字符串
 */
export function formatCurrency(value) {
  return `¥${formatPrice(value)}`
}


